package com.accompany.base;

import com.accompany.main.ConstantStaticUrl;

import java.util.List;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;

/**
 * 作者：菲菲 on 2020/7/27 14:54
 * <p>网络请求
 * company：丰蓉科技
 */
public interface BaseService {
    /**
     * @param mMobile
     * @return 根据手机号码获取验证码
     */
    @GET(ConstantStaticUrl.GET_LOGIN_MSG_CODE)
    Call<ResponseBody> getUserCode(@Query("mobile") String mMobile);

    /**
     * 根据版本号更新
     * @param
     * @return
     */
    @GET(ConstantStaticUrl.GET_VERSION_MSG)
    Call<ResponseBody> getVersionMsg();

    /**
     * @param mMobile
     * @param smsCode
     * @return 根据验证码和手机号实现用户登录
     */
    @POST(ConstantStaticUrl.GET_LOGIN_URL)
    Call<ResponseBody> getUserLogin(@Query("mobile") String mMobile,
                                    @Query("smsCode") String smsCode);

    /**
     * @param mToken
     * @param orderStatus
     * @param pageNum
     * @param pageSize
     * @return
     *
     */
    @GET(ConstantStaticUrl.GET_GRAB_ORDER)
    Call<ResponseBody> get_grab_orer(@Header(ConstantStaticUrl.mToken) String mToken,
                                     @Query("orderStatus") int orderStatus,
                                     @Query("pageNum") int pageNum,
                                     @Query("pageSize") int pageSize);

    /**
     * @param mToken
     * 抢单
     * @param requestBody
     * @return
     */
    @POST(ConstantStaticUrl.GET_TAKEORDER_DETIAL)
    Call<ResponseBody> getTakeOrderDetial(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Body RequestBody requestBody);

    @POST(ConstantStaticUrl.GET_LOCATION_URL)
    Call<ResponseBody> getlocation(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Body RequestBody requestBody);

    /**
     * @param mToken
     * @param acdId
     * @param orderStatus
     * @param pageNum
     * @param pageSize
     * @return
     * 订单列表
     */
    @GET(ConstantStaticUrl.GET_ORDER_LIST)
    Call<ResponseBody> get_order_list(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Query("acdId") long acdId,
                                      @Query("orderStatus") int orderStatus,
                                      @Query("pageNum") int pageNum,
                                      @Query("pageSize") int pageSize);

    /**
     * @param mToken
     * @param orderId
     *根据订单id查询订单详情
     * @return
     */
    @GET(ConstantStaticUrl.GET_ORDER_DETIALS)
    Call<ResponseBody> get_order_detials(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Query("orderId") long orderId);
    @POST(ConstantStaticUrl.GET_START_SERVICE)
    Call<ResponseBody> get_start_serive(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("id") long orderId);

    /**
     * @param mMobile
     * @return 根据手机号码获取验证码
     */

    @GET(ConstantStaticUrl.GET_Mobile_CODE)
    Call<ResponseBody> getMobileCode(@Query("mobile") String mMobile);

    @POST(ConstantStaticUrl.get_add_peizhen)
    Call<ResponseBody> getPeizhenMsg(@Body RequestBody requestBody);
    //城市信息
    @GET(ConstantStaticUrl.GET_PROVICE_URL)
    Call<ResponseBody> getProvinceCityList();



    //订单评论
    @GET(ConstantStaticUrl.GET_ORDER_COMMENTS)
    Call<ResponseBody> get_order_comment(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("orderId") String orderId,
                                         @Query("acdId") long acdId);
    //明细信息
    @GET(ConstantStaticUrl.GET_BANALANCE_INFO)
    Call<ResponseBody> get_balance_info(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("id") long orderId);

    //明细列表
    @GET(ConstantStaticUrl.GET_BANALANCE_LIST)
    Call<ResponseBody> get_balance_list(@Header(ConstantStaticUrl.mToken) String mToken,
                                        @Query("acdId") long acdId,
                                        @Query("pageNum") int pageNum,
                                        @Query("pageSize") int pageSize);

    @POST(ConstantStaticUrl.GET_STOP_SERVICE)
    Call<ResponseBody> get_complete_order(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Query("id") long orderId);
    @GET(ConstantStaticUrl.GET_DELETE_ORDER)
    Call<ResponseBody> get_delete_order(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Query("orderId") long orderId);


    @GET(ConstantStaticUrl.BANK_LIST)
    Call<ResponseBody> get_bank_list(@Header(ConstantStaticUrl.mToken) String mToken,
                                        @Query("acdId") long acdId);
    /**
     * @param requestBody
     * @return 添加银行卡
     */
    @POST(ConstantStaticUrl.ADD_BLANK_CARD)
    Call<ResponseBody> add_blank_card(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Body RequestBody requestBody);
    //校验银行卡
    @GET(ConstantStaticUrl.VER_BLANK_CARD)
    Call<ResponseBody> ver_blank_card(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Query("acdBankcard") String  acdBankcard);
    //解绑银行卡
    @GET(ConstantStaticUrl.UNBIND_BLANK_CARD)
    Call<ResponseBody> unbind_blank_card(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Query("id") String  id);

    @POST(ConstantStaticUrl.GET_MONEY_INFOR)
    Call<ResponseBody> get_money_infor(@Header(ConstantStaticUrl.mToken) String mToken,
                                      @Body RequestBody requestBody);


    @GET(ConstantStaticUrl.GET_PRICE_MONEY)
    Call<ResponseBody> get_account_money(@Header(ConstantStaticUrl.mToken) String mToken,
                                       @Query("acdId") String  acdid);
    @GET(ConstantStaticUrl.GET_RECORD_MONEY)
    Call<ResponseBody> get_extract_record(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("acdId") String  acdid,
                                          @Query("pageNum") int pageNum,
                                          @Query("pageSize") int pageSize);


    @GET(ConstantStaticUrl.GET_USER_INFOR)
    Call<ResponseBody> get_user_infor(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("acdId") String  acdid);

    @Multipart
    @POST(ConstantStaticUrl.upload_iamge)
    Call<ResponseBody> uploadImage(@Header(ConstantStaticUrl.mToken) String mToken,
                                   @Query("acdId") long userId,
                                   @Part List<MultipartBody.Part> partLis);

    @POST(ConstantStaticUrl.uploadImageNicheng)
    Call<ResponseBody> get_upload_nicheng(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Body RequestBody requestBody);

    @DELETE(ConstantStaticUrl.getLoginOut)
    Call<ResponseBody> getLoginOut(@Header(ConstantStaticUrl.mToken) String mToken);


}
